package com.carrot.gateway.app;

import com.carrot.common.core.domain.R;
import com.carrot.gateway.entity.dto.LoginDto;
import com.carrot.gateway.entity.dto.TokenDto;
import org.springframework.http.server.reactive.ServerHttpRequest;

/**
 * @author 刘红真
 */
public interface IAuthAppService {

    /**
     * 获取token
     * @param code 授权码
     * @param appName 应用名称
     * @param redirectUri 重定向地址
     * @return
     */
    R getToken(String code, String redirectUri, String appName);

    /**
     * 登录
     * @param loginDto 登录参数
     * @return R
     */
    R login(LoginDto loginDto);

    /**
     * 获取短信验证码
     * @param phone 手机号
     * @return R
     */
    R getSmsCaptcha(String phone,String appName);

    /**
     * 根据刷新令牌获取访问令牌
     * @param refreshToken 刷新token
     * @param appName 应用名称
     * @return R
     */
    R getTokenByRefreshToken(String refreshToken, String appName,String clientIp);

    /**
     * 退出登录
     * @param request 请求
     * @param token token
     * @return R
     */
    R outLogin(ServerHttpRequest request, TokenDto token);
}
